﻿namespace MsForgeReboot.Framework.Interfaces {
    #region Usings

    using System.Collections.Generic;

    using MsForgeReboot.Framework.Entities;

    using PagedList;

    #endregion

    public interface IEventService {
        /// <summary>
        ///     Upcomings the events.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="pageSize">Size of the page.</param>
        /// <returns></returns>
        IPagedList<Event> UpcomingEvents(int page, int pageSize);

        /// <summary>
        ///     Saves the specified model.
        /// </summary>
        /// <param name="model">The model.</param>
        void Save(Event model);

        /// <summary>
        ///     Deletes the specified title.
        /// </summary>
        /// <param name="urlPointer">The URL pointer.</param>
        void Delete(string urlPointer);

        /// <summary>
        ///     Gets the by URL pointer.
        /// </summary>
        /// <param name="urlPointer">The URL pointer.</param>
        /// <returns></returns>
        Event GetByUrlPointer(string urlPointer);

        /// <summary>
        ///     Gets all.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="pageSize">Size of the page.</param>
        /// <returns></returns>
        IPagedList<Event> GetAll(int page, int pageSize);

        IList<IChannel> PeekQueue();
    }
}
